%% fig1.m
% 完整示例：在同一图中绘制不同幅值和不同频率下的忆阻器伏安滞回曲线

clear; clc; close all;

%% 固定参数
a = 0;
b = 1;
phi0 = 0;           % 初始状态 φ(0)
numCycles = 2;      % 周期
tspan_amp = [0, numCycles*(1/0.5)];  % 幅值部分时间范围（频率固定为0.5 Hz）
tspan_freq = [];  % 频率部分稍后定义
% 若使用自定义 RK4 求解器，步长 h 已在 rk4.m 内默认设为 0.001

%% 定义颜色 (RGB)
colors = [0 0.4470 0.7410;    % 蓝色
          0.8500 0.3250 0.0980; % 橙色
          0.9290 0.6940 0.1250];% 黄色

%% 新建图窗，并分两部分绘制
figure;

%% subplot 1: 不同幅值下的滞回曲线（固定频率 F = 0.5 Hz）
subplot(1,2,1); 
hold on;
F_fixed = 0.5;          % 固定频率
amplitudes = [5.0, 4.7, 4.3];  % 三组不同的幅值 (V)

for i = 1:length(amplitudes)
    A = amplitudes(i);
    [t, phi, Vt, It] = memristor(a, b, A, F_fixed, phi0, tspan_amp);
    
    % 绘制伏安特性曲线，用不同颜色区分
    plot(Vt, It, 'LineWidth',1.5, 'Color', colors(i,:));
end
xlabel('电压 V (V)');
ylabel('电流 I (A)');
legend('A = 5 V','A = 4.7 V','A = 4.3 V','Location','best');
title('不同幅值下的滞回曲线 (F = 0.5 Hz)');
grid on;
axis equal;
hold off;

%% subplot 2: 不同频率下的滞回曲线（固定幅值 A = 5 V）
subplot(1,2,2);
hold on;
A_fixed = 5;            % 固定幅值
frequencies = [0.50, 0.55, 0.65];  % 三个不同频率 (Hz)

for i = 1:length(frequencies)
    F = frequencies(i);
    tspan_freq = [0, numCycles*(1/F)];
    
    [t, phi, Vt, It] = memristor(a, b, A_fixed, F, phi0, tspan_freq);
    
    plot(Vt, It, 'LineWidth',1.5, 'Color', colors(i,:));
end
xlabel('电压 V (V)');
ylabel('电流 I (A)');
legend('F = 0.25 Hz','F = 0.5 Hz','F = 1 Hz','Location','best');
title('不同频率下的滞回曲线 (A = 5 V)');
grid on;
axis equal;
hold off;
